package com.gditt.innerClass;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;

public class InnerClassTest {

	public static void main(String[] args) {
		TalkingClock clock = new TalkingClock(1000, true);
//		TalkingClock.TimePrinter listener = jabberer.new TimePrinter();
		clock.start();
		
		//keep program running until user selects "Ok"
		JOptionPane.showMessageDialog(null, "Quit program?");
		System.exit(0);
	}

}

/*
 *A clock that prints the time in regular intervals. 
 */
class TalkingClock {
	private int interval;
	private boolean beep;
	
	/*
	 * Constructs a talking clock
	 * @param interval the interval between messages (in milliseconds)
	 * @param beep true if the clock should beep
	 */
	public TalkingClock (int interval, boolean beep) { 
		this.interval = interval;
		this.beep = beep;
	}
	
	/*
	 * Starts the clock.
	 */
	public void start() {
		
		class TimePrinter implements ActionListener {
			public void actionPerformed(ActionEvent event) {
				System.out.println("At the tone, the time is "+ new Date());
				if (beep) {
					Toolkit.getDefaultToolkit().beep();
				}
			}
		}
		
		ActionListener listener = new TimePrinter();
//		ActionListener listener = this.new TimePrinter();
		Timer t = new Timer(interval, listener);
		t.start();
	}
	
//	public class TimePrinter implements ActionListener {
//		public void actionPerformed(ActionEvent event) {
//			System.out.println("At the tone, the time is "+ new Date());
////			if (beep) {
////				Toolkit.getDefaultToolkit().beep();
////			}
//			if (TalkingClock.this.beep) {
//				Toolkit.getDefaultToolkit().beep();
//			}
//		}
//	}
}
